package com.gmrz.webauthn.protocol.v1.schema;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import com.google.inject.Inject;

import java.util.List;
import java.util.Map;


public class PublicKeyCredentialCreationOptions {
    @SerializedName("rp")
    @Expose
    PublicKeyCredentialRpEntity rp;
    @SerializedName("user")
    @Expose
    PublicKeyCredentialUserEntity user;
    @SerializedName("challenge")
    @Expose
    private String challenge;
    @SerializedName("pubKeyCredParams")
    @Expose
    private List<PublicKeyCredentialParameters> pubKeyCredParams;
    @SerializedName("timeout")
    @Expose
    private long timeout;
    @SerializedName("excludeCredentials")
    @Expose
    private List<PublicKeyCredentialDescriptor> excludeCredentials;
    @SerializedName("authenticatorSelection")
    @Expose
    private AuthenticatorSelectionCriteria authenticatorSelection;
    @SerializedName("attestation")
    @Expose
    AttestationConveyancePreference attestation;
    @SerializedName("extensions")
    @Expose
    private Map<String, Object> extensions;

    public AuthenticatorSelectionCriteria getAuthenticatorSelectionCriteria() {
        return this.authenticatorSelection;
    }

    @Inject
    public void setAuthenticatorSelection(AuthenticatorSelectionCriteria authenticatorSelection) {
        this.authenticatorSelection = authenticatorSelection;
    }

    public List<PublicKeyCredentialDescriptor> getExcludeList() {
        return this.excludeCredentials;
    }

    public void setExcludeList(List<PublicKeyCredentialDescriptor> excludeList) {
        this.excludeCredentials = excludeList;
    }

    public Map<String, Object> getExtensions() {
        return this.extensions;
    }

    public void setExtensions(Map<String, Object> extensions) {
        this.extensions = extensions;
    }

    public List<PublicKeyCredentialParameters> getCryptoParameters() {
        return this.pubKeyCredParams;
    }

    public void setCryptoParameters(List<PublicKeyCredentialParameters> cryptoParameters) {
        this.pubKeyCredParams = cryptoParameters;
    }

    public String getChallenge() {
        return this.challenge;
    }

    public void setChallenge(String challenge) {
        this.challenge = challenge;
    }

    public PublicKeyCredentialRpEntity getRp() {
        return this.rp;
    }

    @Inject
    public void setRp(PublicKeyCredentialRpEntity rp) {
        this.rp = rp;
    }

    public PublicKeyCredentialUserEntity getUser() {
        return this.user;
    }

    @Inject
    public void setUser(PublicKeyCredentialUserEntity user) {
        this.user = user;
    }

    public List<PublicKeyCredentialParameters> getParameters() {
        return this.pubKeyCredParams;
    }

    public void setParameters(List<PublicKeyCredentialParameters> pubKeyCredParams) {
        this.pubKeyCredParams = pubKeyCredParams;
    }

    public long getTimeout() {
        return this.timeout;
    }

    public void setTimeout(long timeout) {
        this.timeout = timeout;
    }

    public AuthenticatorSelectionCriteria getAuthenticatorSelection() {
        return this.authenticatorSelection;
    }

    public List<PublicKeyCredentialParameters> getPubKeyCredParams() {
        return this.pubKeyCredParams;
    }

    public void setPubKeyCredParams(List<PublicKeyCredentialParameters> pubKeyCredParams) {
        this.pubKeyCredParams = pubKeyCredParams;
    }

    public List<PublicKeyCredentialDescriptor> getExcludeCredentials() {
        return this.excludeCredentials;
    }

    public void setExcludeCredentials(List<PublicKeyCredentialDescriptor> excludeCredentials) {
        this.excludeCredentials = excludeCredentials;
    }

    public AttestationConveyancePreference getAttestation() {
        return this.attestation;
    }

    public void setAttestation(AttestationConveyancePreference attestation) {
        this.attestation = attestation;
    }
}
